home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / spiele / thrust / source / iwinview.mod < prev    next >
Text File  |  1996-10-16  |  3KB  |  108 lines

  1. MODULE IWinView; (* AK 7.10.96 *)
  2.  
  3. (*
  4.  Subclasses WinView for Iconify (MTOS, MagiC)
  5.  *)
  6.  
  7. IMPORT
  8.   Evnt, Wind, WinView,
  9.   AES, Appl, SYSTEM;
  10.  
  11. TYPE IViewer* = POINTER TO IViewDesc;
  12.      IViewDesc* = RECORD(WinView.ViewDesc);
  13.                     iconified- : BOOLEAN;
  14.                   END;
  15.  
  16. VAR Msg : ARRAY 8 OF INTEGER; (* für Redrawmessage *)
  17.     desk* : RECORD x, y, w, h : INTEGER; END;
  18.  
  19. PROCEDURE (v : IViewer) Initialize*;
  20. BEGIN
  21.   v.Initialize^;
  22.   v.iconified := FALSE;
  23.   v.elements := {Wind.TITLE, Wind.INFOLINE, Wind.CLOSER, Wind.FULLER, Wind.MOVER,
  24.                  Wind.SIZER, Wind.UPARROW, Wind.DNARROW, Wind.VSLIDER,
  25.                  Wind.LFARROW, Wind.RTARROW, Wind.HSLIDER, Wind.SMALLER};
  26.   Wind.Calc( Wind.WORKSP, v.elements, desk.x, desk.y, desk.w, desk.h, v.fx, v.fy, v.fw, v.fh);
  27.   v.x := v.fx; v.y := v.fy; v.w := v.fw; v.h := v.fh;
  28. END Initialize;
  29.  
  30. PROCEDURE (v : IViewer) SetInfo* (info : ARRAY OF CHAR);
  31. (* Neue Funktion *)
  32. BEGIN
  33.   COPY(info, v.info);
  34.   IF v.opened THEN
  35.     Wind.SetAddress( v.handle, Wind.INFO, SYSTEM.ADR( v.info) );
  36.   END;
  37. END SetInfo;
  38.  
  39. PROCEDURE (v : IViewer) Moved* (newX, newY : INTEGER);
  40. VAR x, y, w, h : INTEGER;
  41. BEGIN
  42.   IF v.iconified THEN
  43.     Wind.GetXYWH(v.handle, Wind.CURR, x, y, w, h);
  44.     Wind.SetCurr(v.handle, newX, newY, w, h);
  45.   ELSE
  46.     v.Moved^(newX, newY);
  47.   END;
  48. END Moved;
  49.  
  50. PROCEDURE(v : IViewer) Open*;
  51. (* Correction of creation with Full Size (AK) *)
  52. BEGIN
  53.   Wind.Calc(Wind.WHOLE, v.elements, v.fx, v.fy, v.fw, v.fh, v.fx, v.fy, v.fw, v.fh);
  54.   v.Open^;
  55.   Wind.Calc(Wind.WORK, v.elements, v.fx, v.fy, v.fw, v.fh, v.fx, v.fy, v.fw, v.fh);
  56. END Open;
  57.  
  58.  
  59. PROCEDURE (v : IViewer) RedrawAll*;
  60. BEGIN
  61.   v.UpdateRect(desk.x, desk.y, desk.w, desk.h);
  62. END RedrawAll;
  63.  
  64. PROCEDURE (v : IViewer) Iconified* (x, y, w, h : INTEGER);
  65. BEGIN
  66.   Wind.Iconify(v.handle, x, y, w, h);
  67.   v.iconified := TRUE;
  68. END Iconified;
  69.  
  70. PROCEDURE (v : IViewer) UnIconified* (x, y, w, h : INTEGER);
  71. BEGIN
  72.   IF (x = 0) & (y = 0) & (w = 0) & (h = 0) THEN
  73.     Wind.Calc(Wind.WHOLE, v.elements, v.x, v.y, v.w, v.h, x, y, w, h);
  74.   END;
  75.   Wind.UnIconify(v.handle, x, y, w, h);
  76.   v.iconified := FALSE;
  77. END UnIconified;
  78.  
  79. PROCEDURE  (v : IViewer) IconifiedAll* (x, y, w, h : INTEGER);
  80. (* to be overloaded... *)
  81. BEGIN
  82.   v.Iconified (x, y, w, h);
  83. END IconifiedAll;
  84.  
  85.  
  86. PROCEDURE (v : IViewer) HandleMsgEvent* (VAR msgBuf : Evnt.msgbuf) : BOOLEAN;
  87. BEGIN
  88.   CASE msgBuf[0] OF
  89.     Evnt.WMICONIFY :
  90.       v.Iconified (msgBuf[4], msgBuf[5], msgBuf[6], msgBuf[7]);
  91.   | Evnt.WMUNICONIFY :
  92.       v.UnIconified(msgBuf[4], msgBuf[5], msgBuf[6], msgBuf[7]);
  93.   | Evnt.WMALLICONIFY :
  94.       v.IconifiedAll(msgBuf[4], msgBuf[5], msgBuf[6], msgBuf[7]);
  95.   ELSE
  96.     RETURN v.HandleMsgEvent^(msgBuf);
  97.   END;
  98.   RETURN TRUE;
  99. END HandleMsgEvent;
  100.  
  101. PROCEDURE Init;
  102. BEGIN
  103.   Wind.GetXYWH (0, Wind.WORK, desk.x, desk.y, desk.w, desk.h);
  104. END Init;
  105.  
  106. BEGIN
  107.   Init;
  108. END IWinView.